﻿using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Collections;
using System.Windows.Forms;
using System.Globalization;
using HREDU.Hoang_Tuan.Reports;
using HREDU.Hoang_Tuan.Classes;


using Janus.Windows.GridEX;
using System.Drawing.Drawing2D;


namespace HREDU.Hoang_Tuan
{

    public partial class frmDSNHANSU : Form
    {
        const string PH_NV = "NHANVIEN";

        public Form fCallForm;
        DataView dv; //chua toan bo data
        string filterLoaiNV = "";   //Loc cmbLoaiNV
        string filterTheHien = "";  //Loc cmbTheHien
        string filterNganhDT = "";  //Loc cmbNganhDT
        
        //Luu dieu kien search
        public string strSearchCond = ""; //Dieu kien loc danh sach nhan vien theo tim kiem, public la de dung o form frmSearchCommon
        string strDonviCond = ""; //Dieu kien loc danh sach nhan vien theo don vi
        string strDK = ""; //Dieu kien strDK = strSearchCond + strDonviCond

        //Dau vao ten cac column se xu ly trong treeview va listview
        private string nhomColumnName = CDONVICollection.nhomColumnName;
        private string tenColumnName = CDONVICollection.tenColumnName;
        private string cuoiColumnName = CDONVICollection.cuoiColumnName;

        #region "New"

        public frmDSNHANSU()
        {

            // This call is required by the Windows Form Designer.
            InitializeComponent();

            // Add any initialization after the InitializeComponent() call.
            //Neu khong co frmNHANVIEN goi den de copy thong tin nhan vien nao do thi hide button Chon
            btnChon.Visible = false;
        }

        public frmDSNHANSU(Form frmCall)
        {

            // This call is required by the Windows Form Designer.
            InitializeComponent();

            // Add any initialization after the InitializeComponent() call.
            fCallForm = frmCall;

            
        }
        #endregion

        public void AddDK()
        {
            if (strSearchCond != string.Empty)
                strDK = strDonviCond + " and " + strSearchCond;
            else
                strDK = strDonviCond;
        }

        private void frmDSNHANSU_Load(object sender, EventArgs e)
        {
            InitTreeView();
            tvControl.ExpandAll();
            tvControl.SelectedNode = tvControl.Nodes[0];
            //InitDataGridView();
            InitDataGridJanusDSNhanSu();
            string strSQL;
            DataSet ds;

            //Load DM Loai NV
            strSQL = "select * from LOAINV";
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            cmbLoaiNV.DisplayMember = "ten_loainv";
            cmbLoaiNV.ValueMember = "id_loainv";
            cmbLoaiNV.DataSource = ds.Tables[0].DefaultView;
            //Default value
            cmbLoaiNV.SelectedIndex = 2;

            //Load Chế độ hiển thị
            strSQL = "select * from view_CheDoHienThi";
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            cmbHienThi.ValueMember = "ID";
            cmbHienThi.DisplayMember = "TEN";
            cmbHienThi.DataSource = ds.Tables[0].DefaultView;

            //Load Ngành đào tạo
            strSQL = "select * from view_MonDaoTao";
            ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            cmbNganhDT.ValueMember = "ID";
            cmbNganhDT.DisplayMember = "TEN";
            cmbNganhDT.DataSource = ds.Tables[0].DefaultView;

            //Hien thi danh muc don vi
            chkShowDMDonVi.Checked = true;
        }

        #region "tvControl"

        #region "tvControl Functions"

        //Add node dau tien cua treeview
        public void FormatNode(ref TreeNode node)
        {
            node.ForeColor = Color.Blue;
            node.ImageIndex = 0;
            node.SelectedImageIndex = 0;
        }

        public void FormatLeafNode(ref TreeNode node)
        {
            node.ForeColor = Color.DarkRed;
            node.ImageIndex = 1;
            node.SelectedImageIndex = 0;
        }

        public void InitTreeView()
        {
            tvControl.ImageList = ImageList1;
            //Lay danh muc tree view dau tien
            string strSQL;

            //Nhom DON VI
            strSQL = "select * from DONVI where left(nhom,3) = '002' and len(nhom) = (select min(len(nhom)) from DONVI)";

            DataSet ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                //Add Node in Treeview
                TreeNode node = tvControl.Nodes.Add(dr[nhomColumnName].ToString(), dr[tenColumnName].ToString());

                //Kiem tra node co phai la node dau cua treeview khong
                //Neu bang thi cho mau xanh, nguoc lai mau do
                //Tra ve node dau tien theo format dinh san
                if (((bool)dr[cuoiColumnName] == false))
                    FormatNode(ref node);
                else  //Tra ve node leaf theo format dinh san
                    FormatLeafNode(ref node);
            }
            tvControl.Focus();
            tvControl.SelectedNode = tvControl.Nodes[0];
        }

        public void LoadTreeView(string nhomCha)
        {
            //Tim node co theo ten va tra ve kq
            TreeNode[] nodes = tvControl.Nodes.Find(nhomCha, true);
            TreeNode node;

            //Neu khong co node nao tim thay
            if (nodes.Length == 0)
                return;

            //Lay node dau tien trong cac node tim thay
            node = nodes[0];

            //Neu node chon da co cac node con roi thi thoat
            if (node.Nodes.Count > 0)
                return;

            //Lay cac node con theo node can tim ma khong loc theo thuoc tinh cuoi
            DataTable db = CDONVICollection.LayCoQuanTheoNhomCha_DataTable(nhomCha);
            //Neu co node can tim co cac node con
            if (db.Rows.Count > 0)
            {
                foreach (DataRow dr in db.Rows)
                {
                    //Add Node in Treeview
                    TreeNode childNode = node.Nodes.Add(dr[nhomColumnName].ToString(), dr[tenColumnName].ToString());

                    //Kiem tra node co phai la node dau cua treeview khong
                    //Neu bang thi cho mau xanh, nguoc lai mau do
                    //Tra ve node dau tien theo format dinh san
                    if (((bool)dr[cuoiColumnName] == false))
                        FormatNode(ref childNode);
                    else  //Tra ve node leaf theo format dinh san
                        FormatLeafNode(ref childNode);
                }
            }
        }

       
        #endregion

        private void tvControl_AfterSelect(object sender, TreeViewEventArgs e)
        {
            strDonviCond = "left(nhom, " + tvControl.SelectedNode.Name.Length.ToString() + ") = '" + tvControl.SelectedNode.Name.ToString() + "'";
            AddDK();
            LoadTreeView(tvControl.SelectedNode.Name);
            LoadDataGridJanusDSNhanSu();

            lblDonVi.Text = tvControl.SelectedNode.Text;
        }

        #endregion

             
        #region "DataGrid Janus 2.0"

        public void InitDataGridJanusDSNhanSu()
        {
            //LoadDataGridJanusDSNhanSu();

            //Style GridEX
            this.dtgDSNhanSu.FlatBorderColor = System.Drawing.SystemColors.ControlDark;
            this.dtgDSNhanSu.GridLineColor = System.Drawing.SystemColors.ScrollBar;
            this.dtgDSNhanSu.GroupRowVisualStyle = Janus.Windows.GridEX.GroupRowVisualStyle.Outlook2003;
            this.dtgDSNhanSu.SelectedFormatStyle.Blend = 0.5F;
            this.dtgDSNhanSu.SelectedFormatStyle.ForeColor = System.Drawing.SystemColors.WindowText;
            this.dtgDSNhanSu.VisualStyleAreas.CheckBoxStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.ControlBorderStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.EditControlsStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.GroupByBoxStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.GroupRowsStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.HeadersStyle = Janus.Windows.GridEX.VisualStyle.Office2003;
            this.dtgDSNhanSu.VisualStyleAreas.ScrollBarsStyle = Janus.Windows.GridEX.VisualStyle.Standard;
            this.dtgDSNhanSu.VisualStyleAreas.TreeGliphsStyle = Janus.Windows.GridEX.VisualStyle.Standard;

            //Group
            dtgDSNhanSu.RetrieveStructure();
            dtgDSNhanSu.RootTable.Groups.Add(new Janus.Windows.GridEX.GridEXGroup(dtgDSNhanSu.RootTable.Columns["TEN_DONVI"]));
            dtgDSNhanSu.RootTable.GroupRowFormatStyle.ForeColor = Color.DarkBlue;
            dtgDSNhanSu.RootTable.GroupRowFormatStyle.FontBold = TriState.True;
            dtgDSNhanSu.GroupByBoxVisible = false;

            dtgDSNhanSu.ThemedAreas = ThemedArea.All;

            FormatDataGridJanusDSNhanSu();
        }

        public void EnablesColumnDataGridJanusDSNhanSu(bool isChucVu, bool isTrinhDo, bool isTienLuong, bool isDangVien, bool isTrinhDoCMNV, bool isNamSinh, bool isNganhDT)
        {
            //CHUC VU
            dtgDSNhanSu.RootTable.Columns["NOISINH"].Visible = isChucVu;
            dtgDSNhanSu.RootTable.Columns["QUEQUAN"].Visible = isChucVu;
            dtgDSNhanSu.RootTable.Columns["DIACHI"].Visible = isChucVu;
            dtgDSNhanSu.RootTable.Columns["NGAYTUYENDUNG"].Visible = isChucVu;
            dtgDSNhanSu.RootTable.Columns["NAMCBQL"].Visible = isChucVu;
            //Chuc vu Dang hien thi o CHUC VU, DANG VIEN, NAM SINH
            dtgDSNhanSu.RootTable.Columns["ChucVuDang"].Visible = isChucVu || isDangVien || isNamSinh;
            //Chuc vu Chinh Quyen hien thi o CHUC VU, DANG VIEN, NAM SINH
            dtgDSNhanSu.RootTable.Columns["ChucVuChinhQuyen"].Visible = isChucVu || isDangVien || isNamSinh || isNganhDT;
            dtgDSNhanSu.RootTable.Columns["ChucVuDoanThe"].Visible = isChucVu || isDangVien || isNamSinh;
            
            //TRINH DO
            dtgDSNhanSu.RootTable.Columns["HOCVAN"].Visible = isTrinhDo || isTrinhDoCMNV;
            dtgDSNhanSu.RootTable.Columns["trinhdochuyenmon"].Visible = isTrinhDo || isTrinhDoCMNV || isTienLuong || isNganhDT;
            dtgDSNhanSu.RootTable.Columns["hedaotao"].Visible = isTrinhDo || isTrinhDoCMNV || isNganhDT;
            dtgDSNhanSu.RootTable.Columns["mondaotao"].Visible = isTrinhDo || isNganhDT;
            dtgDSNhanSu.RootTable.Columns["chinhtri"].Visible = isTrinhDo;
            dtgDSNhanSu.RootTable.Columns["NGOAINGU"].Visible = isTrinhDo;
            dtgDSNhanSu.RootTable.Columns["TINHOC"].Visible = isTrinhDo;
            dtgDSNhanSu.RootTable.Columns["QLGIAODUC"].Visible = isTrinhDo;
            dtgDSNhanSu.RootTable.Columns["QLNHANUOC"].Visible = isTrinhDo;

            //TIEN LUONG
            dtgDSNhanSu.RootTable.Columns["maso"].Visible = isTienLuong || isNganhDT;
            dtgDSNhanSu.RootTable.Columns["ten_bac"].Visible = isTienLuong;
            dtgDSNhanSu.RootTable.Columns["heso"].Visible = isTienLuong;
            dtgDSNhanSu.RootTable.Columns["PHUCAPTNVK"].Visible = isTienLuong;
            dtgDSNhanSu.RootTable.Columns["HESOPCCV"].Visible = isTienLuong;
            dtgDSNhanSu.RootTable.Columns["NAMXEPLUONG"].Visible = isTienLuong;

            //DANG VIEN
            dtgDSNhanSu.RootTable.Columns["thanhphan"].Visible = isDangVien;
            dtgDSNhanSu.RootTable.Columns["dantoc"].Visible = isDangVien;
            dtgDSNhanSu.RootTable.Columns["tongiao"].Visible = isDangVien;
            //dtgDSNhanSu.RootTable.Columns["DANGVIEN"].Visible = isDangVien;
            dtgDSNhanSu.RootTable.Columns["NGAYKETNAP"].Visible = isDangVien;
            dtgDSNhanSu.RootTable.Columns["NGAYCHINHTHUC"].Visible = isDangVien;
        }

        public void ChonCheDoHienThiDataGridJanusDSNhanSu()
        {
            int id_chedohienthi = (int)cmbHienThi.SelectedValue;
            switch (id_chedohienthi)
            {
                case 1: //Chuc vu
                    EnablesColumnDataGridJanusDSNhanSu(true, false, false, false, false, false, false);
                    break;
                case 2: //Trinh do
                    EnablesColumnDataGridJanusDSNhanSu(false, true, false, false, false, false, false);
                    break;
                case 3: // Tien luong
                    EnablesColumnDataGridJanusDSNhanSu(false, false, true, false, false, false, false);
                    break;
                case 4: //Dang vien
                    EnablesColumnDataGridJanusDSNhanSu(false, false, false, true, false, false, false);
                    break;
                case 5: //Trinh do dao tao CMNV
                    EnablesColumnDataGridJanusDSNhanSu(false, false, false, false, true, false, false);
                    break;
                case 6: //Nam sinh (Nu)
                    EnablesColumnDataGridJanusDSNhanSu(false, false, false, false, false, true, false);
                    break;
                case 7: //Nam sinh (Nam)
                    EnablesColumnDataGridJanusDSNhanSu(false, false, false, false, false, true, false);
                    break;
                case 8: //Nganh dao tao (Nam)
                    EnablesColumnDataGridJanusDSNhanSu(false, false, false, false, false, false, true);
                    break;
            }
        }

        public void LoadDataGridJanusDSNhanSu()
        {
            DataSet ds = CNHANVIENCollection.LayDSNhanVienTheoDK(strDK);
            dv = ds.Tables[0].DefaultView;
            //Filter dataview
            cmbLoaiNV_SelectedIndexChanged(null, null);
            dtgDSNhanSu.DataSource = dv;
            TongSoToolStripStatusLabel.Text = "Có tất cả " + dv.Count.ToString() + " người";
        }

        public void FormatDataGridJanusDSNhanSu()
        {
            CultureInfo culture = new CultureInfo("fr-FR", true);

            //Set visible = false cho tat ca cac thuoc
            for (int i = 0; i < dtgDSNhanSu.RootTable.Columns.Count; i++)
            {
                dtgDSNhanSu.RootTable.Columns[i].Visible = false;
            }

            //Cac thuoc tinh chung
            dtgDSNhanSu.RootTable.Columns["MACBCC"].Visible = true;
            dtgDSNhanSu.RootTable.Columns["MACBCC"].Caption = "Mã";
            dtgDSNhanSu.RootTable.Columns["MACBCC"].Width = 60;

            dtgDSNhanSu.RootTable.Columns["TEN_KHAISINH"].Visible = true;
            dtgDSNhanSu.RootTable.Columns["TEN_KHAISINH"].Caption = "Họ và tên khai sinh";
            dtgDSNhanSu.RootTable.Columns["TEN_KHAISINH"].Width = 110;

            dtgDSNhanSu.RootTable.Columns["NGAYSINH"].Visible = true;
            dtgDSNhanSu.RootTable.Columns["NGAYSINH"].Caption = "Ngày sinh";
            dtgDSNhanSu.RootTable.Columns["NGAYSINH"].FormatString = culture.DateTimeFormat.ShortDatePattern;
            dtgDSNhanSu.RootTable.Columns["NGAYSINH"].Width = 64;

            dtgDSNhanSu.RootTable.Columns["GIOITINH"].Visible = true;
            dtgDSNhanSu.RootTable.Columns["GIOITINH"].Caption = "Giới tính";
            dtgDSNhanSu.RootTable.Columns["GIOITINH"].Width = 51;

            //group
            dtgDSNhanSu.RootTable.Columns["TEN_DONVI"].Visible = false;
            dtgDSNhanSu.RootTable.Columns["TEN_DONVI"].Caption = "Đơn vị: ";
            dtgDSNhanSu.RootTable.Columns["TEN_DONVI"].CharacterCasing = CharacterCasing.Upper;

            //CHUC VU
            dtgDSNhanSu.RootTable.Columns["NOISINH"].Caption = "Nơi sinh";
            dtgDSNhanSu.RootTable.Columns["NOISINH"].Width = 120;
            
            dtgDSNhanSu.RootTable.Columns["QUEQUAN"].Caption = "Quê quán";
            dtgDSNhanSu.RootTable.Columns["QUEQUAN"].Width = 120;
            
            dtgDSNhanSu.RootTable.Columns["DIACHI"].Caption = "Nơi ở hiện nay";
            dtgDSNhanSu.RootTable.Columns["DIACHI"].Width = 120;
            
            dtgDSNhanSu.RootTable.Columns["NGAYTUYENDUNG"].Caption = "Năm vào ngành";
            dtgDSNhanSu.RootTable.Columns["NGAYTUYENDUNG"].FormatString = culture.DateTimeFormat.ShortDatePattern;

            dtgDSNhanSu.RootTable.Columns["NAMCBQL"].Caption = "Năm làm CBQL";
            dtgDSNhanSu.RootTable.Columns["NAMCBQL"].FormatString = culture.DateTimeFormat.ShortDatePattern;
            
            dtgDSNhanSu.RootTable.Columns["thanhphan"].Caption = "Thành phần";
            dtgDSNhanSu.RootTable.Columns["thanhphan"].Width = 72;
            
            dtgDSNhanSu.RootTable.Columns["dantoc"].Caption = "Dân tộc";
            dtgDSNhanSu.RootTable.Columns["dantoc"].Width = 53;
            
            dtgDSNhanSu.RootTable.Columns["tongiao"].Caption = "Tôn giáo";
            dtgDSNhanSu.RootTable.Columns["tongiao"].Width = 67;
            
            dtgDSNhanSu.RootTable.Columns["ChucVuDang"].Caption = "Chức vụ Đảng";
            dtgDSNhanSu.RootTable.Columns["ChucVuChinhQuyen"].Caption = "Chức vụ Chính quyền";
            dtgDSNhanSu.RootTable.Columns["ChucVuDoanThe"].Caption = "Chức vụ Đoàn thể";
            dtgDSNhanSu.RootTable.Columns["HOCVAN"].Caption = "Học vấn";
            dtgDSNhanSu.RootTable.Columns["trinhdochuyenmon"].Caption = "Trình độ CMNV";
            dtgDSNhanSu.RootTable.Columns["hedaotao"].Caption = "Hệ đào tạo";
            dtgDSNhanSu.RootTable.Columns["mondaotao"].Caption = "Môn đào tạo";
            dtgDSNhanSu.RootTable.Columns["chinhtri"].Caption = "Trình độ chính trị";
            dtgDSNhanSu.RootTable.Columns["NGOAINGU"].Caption = "Trình độ ngoại ngữ";
            dtgDSNhanSu.RootTable.Columns["TINHOC"].Caption = "Trình độ tin học";

            dtgDSNhanSu.RootTable.Columns["QLGIAODUC"].Caption = "Đã học QLGD";
            dtgDSNhanSu.RootTable.Columns["QLGIAODUC"].Width = 83;

            dtgDSNhanSu.RootTable.Columns["QLNHANUOC"].Caption = "Đã học QLNN";
            dtgDSNhanSu.RootTable.Columns["QLNHANUOC"].Width = 83;

            dtgDSNhanSu.RootTable.Columns["maso"].Caption = "Ngạch";
            dtgDSNhanSu.RootTable.Columns["maso"].Width = 76;
            
            dtgDSNhanSu.RootTable.Columns["ten_bac"].Caption = "Bậc";
            dtgDSNhanSu.RootTable.Columns["ten_bac"].Width = 36;
            
            dtgDSNhanSu.RootTable.Columns["heso"].Caption = "Hệ số";
            dtgDSNhanSu.RootTable.Columns["heso"].FormatString = GeneralCode.FormatQuantityStyle();
            dtgDSNhanSu.RootTable.Columns["heso"].TextAlignment = TextAlignment.Far;
            dtgDSNhanSu.RootTable.Columns["heso"].Width = 41;

            dtgDSNhanSu.RootTable.Columns["PHUCAPTNVK"].Caption = "PCTNVK(%)";
            dtgDSNhanSu.RootTable.Columns["PHUCAPTNVK"].FormatString = GeneralCode.FormatQuantityStyle();
            dtgDSNhanSu.RootTable.Columns["PHUCAPTNVK"].TextAlignment = TextAlignment.Far;
            dtgDSNhanSu.RootTable.Columns["PHUCAPTNVK"].Width = 50;
            
            dtgDSNhanSu.RootTable.Columns["HESOPCCV"].Caption = "PCCV";
            dtgDSNhanSu.RootTable.Columns["HESOPCCV"].FormatString = GeneralCode.FormatQuantityStyle();
            dtgDSNhanSu.RootTable.Columns["HESOPCCV"].TextAlignment = TextAlignment.Far;
            dtgDSNhanSu.RootTable.Columns["HESOPCCV"].Width = 50;

            dtgDSNhanSu.RootTable.Columns["NAMXEPLUONG"].Caption = "Năm xếp lương";
            dtgDSNhanSu.RootTable.Columns["NAMXEPLUONG"].FormatString = "MM/yyyy";
            dtgDSNhanSu.RootTable.Columns["NAMXEPLUONG"].TextAlignment = TextAlignment.Center;
            
            //dtgDSNhanSu.RootTable.Columns["DANGVIEN"].Caption = "Đảng viên";
            //dtgDSNhanSu.RootTable.Columns["DANGVIEN"].Width = 64;
            
            dtgDSNhanSu.RootTable.Columns["NGAYKETNAP"].Caption = "Ngày kết nạp";
            dtgDSNhanSu.RootTable.Columns["NGAYKETNAP"].FormatString = culture.DateTimeFormat.ShortDatePattern;

            dtgDSNhanSu.RootTable.Columns["NGAYCHINHTHUC"].Caption = "Ngày chính thức";
            dtgDSNhanSu.RootTable.Columns["NGAYCHINHTHUC"].FormatString = culture.DateTimeFormat.ShortDatePattern;
        }
        #endregion

        #region "DataGridView .Net 2005"

        //public void EnablesColumnDataGridView(bool isChucVu, bool isTrinhDo, bool isTienLuong, bool isDangVien)
        //{
        //    //CHUC VU
        //    NHANSUDataGridView.Columns["NOISINH"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["QUEQUAN"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["DIACHI"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["NGAYVAOCOQUAN"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["NAMCBQL"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["ChucVuDang"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["ChucVuChinhQuyen"].Visible = isChucVu;
        //    NHANSUDataGridView.Columns["ChucVuDoanThe"].Visible = isChucVu;

        //    //TRINH DO
        //    NHANSUDataGridView.Columns["HOCVAN"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["trinhdochuyenmon"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["hedaotao"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["mondaotao"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["chinhtri"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["NGOAINGU"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["TINHOC"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["QLGIAODUC"].Visible = isTrinhDo;
        //    NHANSUDataGridView.Columns["QLNHANUOC"].Visible = isTrinhDo;

        //    //TIEN LUONG
        //    NHANSUDataGridView.Columns["trinhdochuyenmon"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["ten_ngach"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["ten_bac"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["heso"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["PHUCAPTNVK"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["HESOPCCV"].Visible = isTienLuong;
        //    NHANSUDataGridView.Columns["NAMXEPLUONG"].Visible = isTienLuong;

        //    //DANG VIEN
        //    NHANSUDataGridView.Columns["thanhphan"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["dantoc"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["tongiao"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["DANGVIEN"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["NGAYKETNAP"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["NGAYCHINHTHUC"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["ChucVuDang"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["ChucVuChinhQuyen"].Visible = isDangVien;
        //    NHANSUDataGridView.Columns["ChucVuDoanThe"].Visible = isDangVien;
        //}

        //public void ChonCheDoHienThi()
        //{
        //    int id_chedohienthi = (int)cmbHienThi.SelectedValue;
        //    switch (id_chedohienthi)
        //    {
        //        case 1:
        //            EnablesColumnDataGridView(true, false, false, false);
        //            break;
        //        case 2:
        //            EnablesColumnDataGridView(false, true, false, false);
        //            break;
        //        case 3:
        //            EnablesColumnDataGridView(false, false, true, false);
        //            break;
        //        case 4:
        //            EnablesColumnDataGridView(false, false, false, true);
        //            break;
        //    }
        //}

        //public void LoadDataGridView()
        //{
        //    string nhom_donvi = tvControl.SelectedNode.Name;
        //    DataSet ds = CNHANVIENCollection.LayDSNhanVienTheo_NhomDONVI(nhom_donvi);
        //    DataView dv = ds.Tables[0].DefaultView;
        //    if (cmbLoaiNV.SelectedValue != null)
        //        if ((int)cmbLoaiNV.SelectedValue != 1)
        //            dv.RowFilter = " id_loainv = " + cmbLoaiNV.SelectedValue;
           
        //    NHANSUDataGridView.DataSource = dv;
        //}

        //public void InitDataGridView()
        //{
        //    LoadDataGridView();
        //    //Set visible = false cho tat ca cac thuoc
        //    for (int i = 0; i < NHANSUDataGridView.Columns.Count; i++)
        //    {
        //        NHANSUDataGridView.Columns[i].Visible = false;
        //    }
            
        //    //Set Frozen cho 4 thuoc tinh
        //    NHANSUDataGridView.Columns["ID_NHANVIEN"].Frozen = true;
        //    NHANSUDataGridView.Columns["ID_LOAINV"].Frozen = true;
        //    NHANSUDataGridView.Columns["MACBCC"].Frozen = true;
        //    NHANSUDataGridView.Columns["TEN_KHAISINH"].Frozen = true;

        //    //Cac thuoc tinh chung
        //    NHANSUDataGridView.Columns["MACBCC"].Visible = true;
        //    NHANSUDataGridView.Columns["MACBCC"].HeaderText = "Mã CBCC";

        //    NHANSUDataGridView.Columns["TEN_KHAISINH"].Visible = true;
        //    NHANSUDataGridView.Columns["TEN_KHAISINH"].HeaderText = "Họ và tên khai sinh";

        //    NHANSUDataGridView.Columns["NGAYSINH"].Visible = true;
        //    NHANSUDataGridView.Columns["NGAYSINH"].HeaderText = "Ngày sinh";

        //    NHANSUDataGridView.Columns["GIOITINH"].Visible = true;
        //    NHANSUDataGridView.Columns["GIOITINH"].HeaderText = "Giới tính";

        //    NHANSUDataGridView.Columns["TEN_DONVI"].Visible = true;
        //    NHANSUDataGridView.Columns["TEN_DONVI"].HeaderText = "Đơn vị công tác";


        //    //CHUC VU
        //    NHANSUDataGridView.Columns["NOISINH"].HeaderText = "Nơi sinh";
        //    NHANSUDataGridView.Columns["QUEQUAN"].HeaderText = "Quê quán";
        //    NHANSUDataGridView.Columns["DIACHI"].HeaderText = "Nơi ở hiện nay";
        //    NHANSUDataGridView.Columns["NGAYVAOCOQUAN"].HeaderText = "Năm vào ngành";
        //    NHANSUDataGridView.Columns["NAMCBQL"].HeaderText = "Năm làm CBQL";
        //    NHANSUDataGridView.Columns["thanhphan"].HeaderText = "Thành phần";
        //    NHANSUDataGridView.Columns["dantoc"].HeaderText = "Dân tộc";
        //    NHANSUDataGridView.Columns["tongiao"].HeaderText = "Tôn giáo";
        //    NHANSUDataGridView.Columns["ChucVuDang"].HeaderText = "Chức vụ Đảng";
        //    NHANSUDataGridView.Columns["ChucVuChinhQuyen"].HeaderText = "Chức vụ Chính quyền";
        //    NHANSUDataGridView.Columns["ChucVuDoanThe"].HeaderText = "Chức vụ Đoàn thể";
        //    NHANSUDataGridView.Columns["HOCVAN"].HeaderText = "Học vấn";
        //    NHANSUDataGridView.Columns["trinhdochuyenmon"].HeaderText = "Trình độ chuyên môn nghiệp vụ";
        //    NHANSUDataGridView.Columns["hedaotao"].HeaderText = "Hệ đào tạo";
        //    NHANSUDataGridView.Columns["mondaotao"].HeaderText = "Môn đào tạo";
        //    NHANSUDataGridView.Columns["chinhtri"].HeaderText = "Trình độ chính trị";
        //    NHANSUDataGridView.Columns["NGOAINGU"].HeaderText = "Trình độ ngoại ngữ";
        //    NHANSUDataGridView.Columns["TINHOC"].HeaderText = "Trình độ tin học";
        //    NHANSUDataGridView.Columns["QLGIAODUC"].HeaderText = "Đã học quản lý giáo dục";
        //    NHANSUDataGridView.Columns["QLNHANUOC"].HeaderText = "Đã học quản lý nhà nước";
        //    NHANSUDataGridView.Columns["ten_ngach"].HeaderText = "Ngạch";
        //    NHANSUDataGridView.Columns["ten_bac"].HeaderText = "Bậc";
        //    NHANSUDataGridView.Columns["heso"].HeaderText = "Hệ số";
        //    NHANSUDataGridView.Columns["PHUCAPTNVK"].HeaderText = "Phụ cấp TNVK";
        //    NHANSUDataGridView.Columns["HESOPCCV"].HeaderText = "Phụ cấp Chức vụ";
        //    NHANSUDataGridView.Columns["NAMXEPLUONG"].HeaderText = "Năm xếp lương";
        //    NHANSUDataGridView.Columns["DANGVIEN"].HeaderText = "Đảng viên";
        //    NHANSUDataGridView.Columns["NGAYKETNAP"].HeaderText = "Ngày kết nạp";
        //    NHANSUDataGridView.Columns["NGAYCHINHTHUC"].HeaderText = "Ngày chính thức";
        //}
        //
        //private void NHANSUDataGridView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        //{
        //    btnChon_Click(null, null);
        //}

        #endregion

        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            btnChon_Click(null, null);
        }

       

        private void cmbHienThi_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cmbHienThi.SelectedIndex)
            {
                case 0://Chuc vu
                case 1://Trinh do
                case 2://Tien luong
                case 4: //Trinh do chuyen mon
                case 7: //Ngành đào tạo
                    filterTheHien = String.Empty;
                    //Neu filterLoaiNV != String.Empty thi Dataview se chi loc theo Loai nhan vien
                    //Neu filterTheHien != String.Empty thi Dataview se chi loc theo Loai nhan vien + The hien
                    UpdateRowFilter();
                    break;
                case 3: //Loc Dang vien
                    filterTheHien = " CHUCVUDANG is not null";
                    //Neu filterLoaiNV != String.Empty thi Dataview se chi loc theo Loai nhan vien
                    UpdateRowFilter();
                    break;
                case 5: //Gioi tinh Nu
                    filterTheHien = " GIOITINH = 'Nữ'";
                    //Neu filterLoaiNV != String.Empty thi Dataview se chi loc theo Loai nhan vien + The hien
                    //Nguoc lai chi loc theo The hien
                    UpdateRowFilter();
                    break;
                case 6:
                    filterTheHien = " GIOITINH = 'Nam'";
                    //Neu filterLoaiNV != String.Empty thi Dataview se chi loc theo Loai nhan vien + The hien
                    //Nguoc lai chi loc theo The hien
                    UpdateRowFilter();
                    break;
            }
            TongSoToolStripStatusLabel.Text = "Có tất cả " + dv.Count.ToString() + " người";
            ChonCheDoHienThiDataGridJanusDSNhanSu();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnChon_Click(object sender, EventArgs e)
        {
            //Neu FORM duoc goi tu frmNHANSU cho viec copy thong tin cua mot ai do de them nhan su moi
            //Nguoc lai la goi frmNHANSU tu form frmDSNHANSU de cap nhat thong tin
            Janus.Windows.GridEX.GridEXRow row = dtgDSNhanSu.GetRow();

            //Neu RowType la record thi moi tiep tuc
            if (row.RowType == Janus.Windows.GridEX.RowType.Record)
            {
                //fCallForm != null cho biết là tạo mới NHANVIEN bằng thông tin của NHANVIEN khác
                if (fCallForm != null)
                {
                    frmNHANSU frm = (frmNHANSU)fCallForm;
                    //frm.objNHANVIEN = CNHANVIENCollection.LayNhanVienTheoID((int)NHANSUDataGridView.Rows[NHANSUDataGridView.SelectedCells[0].RowIndex].Cells["id_nhanvien"].Value);
                    frm.objNHANVIEN = CNHANVIENCollection.LayNhanVienTheoID((int)row.Cells["id_nhanvien"].Value);
                    frm.FillFormNHANSU();
                    //frm.LoadDefaultNHANSUData(2);
                    this.Close();
                }
                else
                {
                    //frmNHANSU frm = new frmNHANSU(this, (int)NHANSUDataGridView.Rows[NHANSUDataGridView.SelectedCells[0].RowIndex].Cells["id_nhanvien"].Value, false);
                    frmNHANSU frm = new frmNHANSU(this, (int)row.Cells["id_nhanvien"].Value, false);
                    frm.ShowDialog();
                }
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void UpdateRowFilter()
        {
            dv.RowFilter = String.Empty;
            //Nếu loại NV <> ""
            if (filterLoaiNV != String.Empty){
                //RowFilter = NV
                dv.RowFilter = filterLoaiNV;
                //Nếu TheHien != ""
                if (filterTheHien != String.Empty)
                    //RowFilter = NV + ' and ' + TheHien
                    dv.RowFilter += " and " + filterTheHien;
                //Nếu NganhDT != ""
                if (filterNganhDT != String.Empty)
                    //RowFilter = NV + ' and ' + TheHien + ' and ' + NganhDT
                    dv.RowFilter += " and " + filterNganhDT;
            }
            else 
            {
                //Nếu TheHien != ""
                if (filterTheHien != String.Empty){
                    //RowFilter = TheHien
                    dv.RowFilter = filterTheHien;
                    //Nếu NganhDT != ""
                    if (filterNganhDT != String.Empty)
                        //RowFilter = TheHien + ' and ' + NganhDT
                        dv.RowFilter += " and " + filterNganhDT;
                }
                else
                    //Nếu NganhDT != ""
                    if (filterNganhDT != String.Empty)
                        //RowFilter = NganhDT
                        dv.RowFilter = filterNganhDT;
            }
        }

        private void cmbLoaiNV_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbLoaiNV.SelectedValue != null)
            {
                //Neu cmbLoaiNV.SelectedValue == 1 thi se khong loc Loai nhan vien
                //Nguoc lai se loc Loai nhan vien theo value
                if ((int)cmbLoaiNV.SelectedValue != 1)
                {
                    filterLoaiNV = " id_loainv = " + cmbLoaiNV.SelectedValue;
                    UpdateRowFilter();
                }
                else
                {
                    filterLoaiNV = String.Empty;
                    UpdateRowFilter();
                }
                TongSoToolStripStatusLabel.Text = "Có tất cả " + dv.Count.ToString() + " người";
            }

        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            string strName = "";
            switch (cmbHienThi.SelectedIndex)
            {
                case 0:
                    strName = "view_rptDSCBQLTheoChucVu";
                    break;
                case 1:
                    strName = "view_rptDSCBQLTheoTrinhDo";
                    break;
                case 2:
                    strName = "view_rptDSCBQLTheoLuong";
                    break;
                case 3:
                    strName = "view_rptDSCBQLTheoDangVien";
                    break;
                case 4:
                    strName = "view_rptDSCBQLTheoTrinhDoCMNV";
                    break;
                case 5:
                    strName = "view_rptDSCBQLTheoNamSinh_Nu";
                    break;
                case 6:
                    strName = "view_rptDSCBQLTheoNamSinh_Nam";
                    break;
                case 7:
                    if (cmbNganhDT.SelectedIndex == 0)
                    {
                        MessageBox.Show("Bạn phải chọn một ngành đào tạo cụ thể.");
                        cmbNganhDT.Focus();
                        return;
                    }
                    strName = "view_rptDSCBQLTheoNganhDT";
                    break;
            }
            
            string ten_donvi = tvControl.SelectedNode.Text;
            string loaicanbo = cmbLoaiNV.SelectedValue.ToString();
            string nhom = tvControl.SelectedNode.Name;

            string strSQL = "select * from " + strName;
            if (cmbLoaiNV.Text != "")
            {
                strSQL += " where id_loainv = " + loaicanbo;
                strSQL += " and left(nhom, " + nhom.Length + ") = " + nhom;
                strSQL += " and len(nhom) >= " + nhom.Length;
                if (cmbNganhDT.SelectedIndex > 0)
                    strSQL += " and ID_MONDAOTAO = " + cmbNganhDT.SelectedValue.ToString();
            }
            else
            {
                strSQL += " where left(nhom, " + nhom.Length + ") = " + nhom;
                strSQL += " and len(nhom) >= " + nhom.Length;
                if (cmbNganhDT.SelectedIndex > 0)
                    strSQL += " and ID_MONDAOTAO = " + cmbNganhDT.SelectedValue.ToString();
            }
            
            DataSet ds = MITI.BaseDB.Instance.ExecSql_DataSet(strSQL);
            ds.Tables[0].TableName = strName;

            switch (cmbHienThi.SelectedIndex)
            {
                case 0:
                    rptDSCBQLTheoChucVu nnreport = new rptDSCBQLTheoChucVu();
                    nnreport.SetDataSource(ds);
                    nnreport.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm = new frmReportViewer(nnreport, "Danh sách theo Chức vụ");
                    frm.ShowDialog();
                    break;
                case 1:
                    rptDSCBQLTheoTrinhDo nnreport1 = new rptDSCBQLTheoTrinhDo();
                    nnreport1.SetDataSource(ds);
                    nnreport1.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport1.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm1 = new frmReportViewer(nnreport1, "Danh sách theo Trình độ");
                    frm1.ShowDialog();
                    break;
                case 2:
                    rptDSCBQLTheoLuong nnreport2 = new rptDSCBQLTheoLuong();
                    nnreport2.SetDataSource(ds);
                    nnreport2.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport2.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm2 = new frmReportViewer(nnreport2, "Danh sách theo Lương");
                    frm2.ShowDialog();
                    break;
                case 3:
                    rptDSCBQLTheoDangVien nnreport3 = new rptDSCBQLTheoDangVien();
                    nnreport3.SetDataSource(ds);
                    nnreport3.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport3.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm3 = new frmReportViewer(nnreport3, "Danh sách theo Đảng viên");
                    frm3.ShowDialog();
                    break;
                case 4:
                    rptDSCBQLTheoTrinhDoCMNV nnreport4 = new rptDSCBQLTheoTrinhDoCMNV();
                    nnreport4.SetDataSource(ds);
                    nnreport4.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport4.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm4 = new frmReportViewer(nnreport4, "Danh sách theo Trình độ đào tạo Chuyên môn nghiệp vụ");
                    frm4.ShowDialog();
                    break;
                case 5:
                    rptDSCBQLTheoNamSinh_Nu nnreport5 = new rptDSCBQLTheoNamSinh_Nu();
                    nnreport5.SetDataSource(ds);
                    nnreport5.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport5.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm5 = new frmReportViewer(nnreport5, "Danh sách theo Năm sinh (Nữ)");
                    frm5.ShowDialog();
                    break;
                case 6:
                    rptDSCBQLTheoNamSinh_Nam nnreport6 = new rptDSCBQLTheoNamSinh_Nam();
                    nnreport6.SetDataSource(ds);
                    nnreport6.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport6.SetParameterValue("donvi", ten_donvi);
                    frmReportViewer frm6 = new frmReportViewer(nnreport6, "Danh sách theo Năm sinh (Nam)");
                    frm6.ShowDialog();
                    break;
                case 7:
                    rptDSCBQLTheoNganhDT nnreport7 = new rptDSCBQLTheoNganhDT();
                    nnreport7.SetDataSource(ds);
                    nnreport7.SetParameterValue("loaicanbo", loaicanbo);
                    nnreport7.SetParameterValue("donvi", ten_donvi);
                    //nnreport7.SetParameterValue("nganhdt", cmbNganhDT.Text.ToUpper());
                    frmReportViewer frm7 = new frmReportViewer(nnreport7, "Danh sách theo Ngành đào tạo");
                    frm7.ShowDialog();
                    break;
            }
        }

        private void thêmMớiHoànToànToolStripMenuItem_Click(object sender, EventArgs e)
        {
            CDONVI objDonVi = CDONVICollection.LayCoQuanTheoNhom(tvControl.SelectedNode.Name);
            if (objDonVi.CUOI == true)
            {
                frmNHANSU frm = new frmNHANSU(objDonVi);
                frm.ShowDialog();
            }
            else
            {
                frmNHANSU frm = new frmNHANSU();
                frm.ShowDialog();
            }

        }

        private void dựaTheoThôngTinHiệnTạiToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Janus.Windows.GridEX.GridEXRow row = dtgDSNhanSu.GetRow();
            if (row == null)
            {
                MessageBox.Show("Chưa chọn người nào.");
                return;
            }
            
            frmNHANSU frm = new frmNHANSU(this, (int)row.Cells["id_nhanvien"].Value, true);
            frm.ShowDialog();
        }

        private void btnThemMoi_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Point ClickPoint = new Point(e.X, e.Y);
                
                // Convert from Tree coordinates to Screen coordinates
                Point ScreenPoint = btnThemMoi.PointToScreen(ClickPoint);
                // Convert from Screen coordinates to Formc coordinates
                Point FormPoint = this.PointToClient(ScreenPoint);
                //Show context menu
                contextMenuStrip3.Show(this, FormPoint);
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            //Neu FORM duoc goi tu frmNHANSU cho viec copy thong tin cua mot ai do de them nhan su moi
            //Nguoc lai la goi frmNHANSU tu form frmDSNHANSU de cap nhat thong tin
            Janus.Windows.GridEX.GridEXRow row = dtgDSNhanSu.GetRow();
            //Neu RowType la record thi moi tiep tuc
            if (row.RowType == Janus.Windows.GridEX.RowType.Record)
            {
                if (MessageBox.Show("Bạn thật sự muốn xóa?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    if (CNHANVIENCollection.Delete(CNHANVIENCollection.LayNhanVienTheoID((int)row.Cells["id_nhanvien"].Value)) > 0)
                    {
                        MessageBox.Show("Xóa thành công");
                        LoadDataGridJanusDSNhanSu();
                    }
                    else
                        MessageBox.Show("Xóa không thành công");
                }
            }
        }
        private void dtgDSNhanSu_RowDoubleClick(object sender, Janus.Windows.GridEX.RowActionEventArgs e)
        {
            btnChon_Click(null, null);
            btnRefresh_Click(null, null);
        }

        private void chkShowDMDonVi_CheckedChanged(object sender, EventArgs e)
        {
            if (chkShowDMDonVi.Checked)
            {
                panel2.Visible = true;
            }
            else
                panel2.Visible = false;
        }

        private void btnRefresh_Click(object sender, EventArgs e)
        {
            LoadDataGridJanusDSNhanSu();
            ChonCheDoHienThiDataGridJanusDSNhanSu();
        }

        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            frmSearchCommon frm = new frmSearchCommon(this);
            frm.strGroup = PH_NV;
            frm.Show();
        }

        private void cmbNganhDT_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbNganhDT.SelectedIndex > 0)
                filterNganhDT = " ID_MONDAOTAO = " + cmbNganhDT.SelectedValue;
            else
                filterNganhDT = String.Empty;
            UpdateRowFilter();
            TongSoToolStripStatusLabel.Text = "Có tất cả " + dv.Count.ToString() + " người";
            ChonCheDoHienThiDataGridJanusDSNhanSu();
        }

      
    }
}